#ifndef SESSION_H
#define SESSION_H
#include <list>
class Object;
class HeightMap;
class Player;
namespace Ogre
{
	class Light;
}

class NxActor;
/**
  * Session manages everything that happens in the game session
  *
  * @author kresimir.spes
  */
class Session
{
public:
	HeightMap* mHeightmap;
	Player* mPlayer;

    Session();
	~Session();

    /**
      * \param k time passed since last update (expressed in seconds)
      *
      * Function called to run update of objects.
      */
    void update(float k);
	
	/**
      *
      * This function initializes physics.
      */
	void initNx();

	void updatePhysics(float timeSinceLastFrame);

	NxActor* createGroundPlane();

	void releaseNx();
    /**
      * This function loads the level from xml and creates the appropriate objects
      */
	void loadObjects(std::string filename);





private:
    /**
      * list of object pointers managed by this session object
      */
    std::list<Object*> mObjects;

	/**
	  * A simple, basic light 
	  */

	Ogre::Light* mLight;

};

#endif
